NoSQL--MongoDB选择

在过去的架构选型及实际使用中,NoSQL数据库当然是必不可少的一部分。分别使用了Cassandra,MongoDB,Redis,HBase这几款有代表性的NoSQL数据库

1,Cassandra:

Cassandra从安装配置,到使用,负载平衡机制等等,无疑是这些新兴的NoSQL中最方便使用的一个(个人使用体验观点)    

但从近期的消息来看由于出现过几次较为严重的数据库停止服务事件,Cassandra的创始人Facebook,及Twitter开始渐渐弃用Cassandra,只把Cassandra用在非核心模块上,不地Digg仍在使用,看来我们要谨慎地对待它。2008年Facebook已让Cassandra开源到Apache.

2.MongoDB:

它的风格可以说,在当今WebAPI流行的时代,它更易于被人使用,BJSON操作风格,自动数据平衡机制(当然要当心存贮碎片问题),相对MySQL等SQL数据库有优秀考虑全面的,分布式方案,自动M/S主从读写切换。对于数据集群来说,可以说相当完美的Sharding等自动化支持。至今听说过的最严重的事件就是FourSquare的11小时数据库宕机事件。相对来说还能接受:),它是使用C++/Boost编写,效率性能的确不错。

3.Redis:

 它就是一个高效的内存数据库,用它来持久化数据存贮,那是扯淡,如果真拿它来与别的NoSQL一样使用(考虑读写一致性或者写安全)那它马上慢下来:)不过他提供了比Memcached更多的操作数据类型,倒可以完全用它来做为一个高效易用的缓存,Benchmark据说优于memcached.我用的数据规模没有这么大,不敢妄加评论。

4.HBase:

概念上也相对完美,有Hive开源工具支持,使HBase,可以相对于其它NoSQL数据库更易于使用,基于HDFS分布文件系统,使HBASE天生就有对海量分布集群很好的支持。又因为与Hadoop相伴而生,所以一个系统想使用数据分析,智能处理,海量逻辑执行,完全可以选择Hadoop + HBase云计算方案。

MongoDB也支持js的Map/Reducer所以可以试着整合一下MongoDB进云计算方案中。

当我使有MySQL + NoSQL方案时,我会选择MongoDB,不仅是因为他的出色的海量分布式方案的支持,也不是因为经的Map/Reducer分布式计算的支持。而是因为还没听说过它有过重大的失败案例,相对较完美的文档(还有中文手册哟)还有JSON分格支持,在当下WebAPI流行的时代,不仅是从个人喜爱角度,也是从工程管理角度,开发人员更Love it,呵呵。

 

我会抽时间,整理一下MongoDB相关的资料共享一些,主要是为了重温以前的Efforts,方便自己回忆。

 

posted @ 2013-02-19 10:49  岁月无声  阅读(7523)  评论(16编辑  收藏  举报